package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs15 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// PERCEPCIONPUESTO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<PERCEPCIONPUESTO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			PuestoTO puestoTO = new PuestoTO();
			puestoTO.setIdPuesto((short) 4);

			PercepcionTO percepcionTO = new PercepcionTO();
			percepcionTO.setIdPercepcion(1);

			PercepcionPuestoDAO percepcionPuestoDAO = fabricaMySQL
					.getPercepcionPuestoDAO();
			PercepcionPuestoTO percepcionPuestoTO = new PercepcionPuestoTO(
					percepcionTO, puestoTO);

			// insert
			if (percepcionPuestoDAO.insertPercepcionPuesto(percepcionPuestoTO)) {
				// percepcionPuestoDAO.insertPercepcionPuesto(percepcionPuestoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza

			PuestoTO puestoTO2 = new PuestoTO();
			puestoTO2.setIdPuesto((short) 2);
			PercepcionPuestoTO percepcionPuestoTONuevo = new PercepcionPuestoTO(
					percepcionTO, puestoTO2);

			resultado = percepcionPuestoDAO.updatePercepcionPuesto(
					percepcionPuestoTO, percepcionPuestoTONuevo);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			percepcionPuestoTO = percepcionPuestoDAO
					.findPercepcionPuestoByPercepcionPuesto(percepcionTO
							.getIdPercepcion(), puestoTO.getIdPuesto());
			if (percepcionPuestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERCEPCIONPUESTO");
				ImprimirTO.Imprime(percepcionPuestoTO);
				System.out.println("PERCEPCION");
				ImprimirTO.Imprime(percepcionPuestoTO.getPercepcionTO());
				System.out.println("PUESTO");
				ImprimirTO.Imprime(percepcionPuestoTO.getPuestoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT PERCEPCIONPUESTO +**");
			java.util.Collection<PercepcionPuestoTO> listPercepcionPuestoTO = percepcionPuestoDAO
					.selectPercepcionPuesto();
			if (listPercepcionPuestoTO != null) {
				for (int i = 0; i < listPercepcionPuestoTO.size(); i++) {
					percepcionPuestoTO = ((ArrayList<PercepcionPuestoTO>) listPercepcionPuestoTO)
							.get(i);
					System.out.println("PERCEPCIONPUESTO");
					ImprimirTO.Imprime(percepcionPuestoTO);
					System.out.println("PERCEPCION");
					ImprimirTO.Imprime(percepcionPuestoTO.getPercepcionTO());
					System.out.println("PUESTO");
					ImprimirTO.Imprime(percepcionPuestoTO.getPuestoTO());

				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR PERCEPCION");
			percepcionPuestoTO = percepcionPuestoDAO
					.selectPercepcionPuestoByPercepcion(1);
			if (percepcionPuestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERCEPCIONPUESTO");

				for (int x = 0; x < percepcionPuestoTO.getListPuestoTO().length; x++) {
					System.out.println("PUESTO");
					ImprimirTO.Imprime(percepcionPuestoTO.getListPuestoTO()[x]);
				}

				System.out.println("PERCEPCION");
				ImprimirTO.Imprime(percepcionPuestoTO.getPercepcionTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR PUESTO");
			percepcionPuestoTO = percepcionPuestoDAO
					.selectPercepcionPuestoByPuesto((short) 3);
			if (percepcionPuestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERCEPCIONPUESTO");

				for (int x = 0; x < percepcionPuestoTO.getListPercepcionTO().length; x++) {
					System.out.println("PERCEPCION");
					ImprimirTO
							.Imprime(percepcionPuestoTO.getListPercepcionTO()[x]);
				}

				System.out.println("PUESTO");
				ImprimirTO.Imprime(percepcionPuestoTO.getPuestoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// BASE
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<BASE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			DireccionTO direccionTO = new DireccionTO();
			direccionTO.setIdDireccion(3);

			TipoBaseTO tipoBaseTO = new TipoBaseTO();
			tipoBaseTO.setIdTipoBase((short) 1);

			BaseDAO baseDAO = fabricaMySQL.getBaseDAO();
			BaseTO baseTO = new BaseTO(0, (short) 4, 3, tipoBaseTO);

			// insert
			if (baseDAO.insertBase(baseTO)) {
				// baseDAO.insertBase(baseTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = baseDAO.deleteBase(5);
			if (resultado == 1)
				System.out.println(">>>>>>>>>>>>>>>>>>> Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// actualiza

			baseTO.setNumeroCajones((short) 20);
			resultado = baseDAO.updateBase(baseTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			baseTO = baseDAO.findBaseById(2);
			if (baseTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("BASE");
				ImprimirTO.Imprime(baseTO);
				System.out.println("TIPOBASE");
				ImprimirTO.Imprime(baseTO.getTipoBaseTO());
				for (int x = 0; x < baseTO.getListDireccionTO().length; x++) {
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(baseTO.getListDireccionTO()[x]);
				}

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT BASE +**");
			java.util.Collection<BaseTO> listBaseTO = baseDAO.selectBase();
			if (listBaseTO != null) {
				for (int i = 0; i < listBaseTO.size(); i++) {
					baseTO = ((ArrayList<BaseTO>) listBaseTO).get(i);

					System.out.println("BASE");
					ImprimirTO.Imprime(baseTO);
					System.out.println("TIPOBASE");
					ImprimirTO.Imprime(baseTO.getTipoBaseTO());
					for (int x = 0; x < baseTO.getListDireccionTO().length; x++) {
						System.out.println("DIRECCION");
						ImprimirTO.Imprime(baseTO.getListDireccionTO()[x]);
					}

				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOBASE");
			baseTO = baseDAO.selectBaseByTipoBase((short)1);
			if (baseTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("BASE");

				for (int x = 0; x < baseTO.getListIdBase().length; x++) {
					System.out.println("IDCOLONIACALLE");
					System.out
							.println(baseTO.getListIdBase()[x]);
				}
				for (int x = 0; x < baseTO.getListNumeroCajones().length; x++) {
					System.out.println("NUMEROCAJONES");
					System.out
							.println(baseTO.getListNumeroCajones()[x]);
				}
				for (int x = 0; x < baseTO.getListDireccionTO().length; x++) {
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(baseTO.getListDireccionTO()[x]);
				}

				System.out.println("TIPOBASE");
				ImprimirTO.Imprime(baseTO.getTipoBaseTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

	}

}
